A card computing device is a device that is embedded with a microprocessor and a memory chip. Card computing devices are used for a variety of applications, including many applications that require cryptography. Card computing devices may be used for, for example, holding money (or money equivalents) and completing financial transactions; providing secure access to a network (such as a mobile network, or a telecommunications service); securing cellular phones or television set-top boxes from fraud or intrusion; and processing data in an Internet of Things (IoT) system.
Applications (also referred as “applets”) may execute on a card computing device via a card runtime environment, such as a Java Card Runtime Environment (JCRE). The card runtime environment may provide for interoperability between applets and card computing devices, independent of card vendor and underlying hardware. The card runtime environment may enable multiple applets to execute simultaneously on a single card computing device. The card runtime environment may ensure that communications with a card computing device are compliant with various industry standards, such as the International Organization for Standardization (ISO)/International Electrotechnical Commission (IEC) 7816 standard, or mobile communication standards by the European Telecommunications Standards Institute (ETSI)/Third Generation Partnership Project (3GPP).
Applets may be written as a set of source code, which conforms to a specification directed to the convenience of the programmer. A compiler converts the set of source code into a set of virtual machine instructions, such as Java bytecode. A card virtual machine within a card runtime environment executes the set of virtual machine instructions. The card virtual machine may be, for example, a Java Card Virtual Machine. The set of virtual machine instructions is an intermediate representation of the applet that is between the source code and a set of machine code or object code. Often, functionality that is presented in simple terms via source code by the programmer is converted into more complex steps that map more directly to the instruction set supported by the underlying hardware on which the virtual machine resides.
A card computing device may have limited power supply. Power may be conserved by powering off a card computing device when the card computing device is not in use. However, powering off a card computing device may delete a state of the card computing device. The next time the card computing device is powered on, the card computing device has lost the state from the previous operation of the card computing device. The card computing device needs to repeat previously performed operations, such as initializing the card computing device and/or applets thereon, and authenticating the card computing device and/or applets thereon. As such, powering off and on a card computing device may be an inefficient way for conserving power of the card computing device.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.